<HTML>
<HEAD>
<!-- This HTML file has been created by texi2html 1.29
     from news4.0.tnf on 19 December 2010 -->

<TITLE>New Features of Eli4.0 - Lido News for Eli 4.0</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000" BACKGROUND="gifs/bg.gif">
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0" VALIGN=BOTTOM>
<TR VALIGN=BOTTOM>
<TD WIDTH="160" VALIGN=BOTTOM>
<A HREF="http://eli-project.sourceforge.net/">
<IMG SRC="gifs/elilogo.gif" BORDER=0>
</A>&nbsp;
</TD>
<TD WIDTH="25" VALIGN=BOTTOM>
<img src="gifs/empty.gif" WIDTH=25 HEIGHT=25>
</TD>
<TD ALIGN=LEFT WIDTH="475" VALIGN=BOTTOM>
<A HREF="index.html"><IMG SRC="gifs/title.png" BORDER=0></A>
</TD>
<!-- |DELETE FOR SOURCEFORGE LOGO|
<TD>
<a href="http://sourceforge.net/projects/eli-project">
<img
  src="http://sflogo.sourceforge.net/sflogo.php?group_id=70447&amp;type=13"
  width="120" height="30"
  alt="Get Eli: Translator Construction Made Easy at SourceForge.net.
    Fast, secure and Free Open Source software downloads"/>
</a>
</TD>
|DELETE FOR SOURCEFORGE LOGO| -->
</TR>
</TABLE>

<HR size=1 noshade width=785 align=left>
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0>
<TR>
<TD VALIGN=TOP WIDTH="160">
<h4>General Information</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="index.html">Eli: Translator Construction Made Easy</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gindex_1.html#SEC1">Global Index</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="faq_toc.html" >Frequently Asked Questions</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Tutorials</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="EliRefCard_toc.html">Quick Reference Card</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="novice_toc.html">Guide For new Eli Users</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="news_toc.html">Release Notes of Eli</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="nametutorial_toc.html">Tutorial on Name Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="typetutorial_toc.html">Tutorial on Type Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Reference Manuals</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ui_toc.html">User Interface</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="pp_toc.html">Eli products and parameters</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lidoref_toc.html">LIDO Reference Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Libraries</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lib_toc.html">Eli library routines</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="modlib_toc.html">Specification Module Library</a></td></tr>
</table>

<h4>Translation Tasks</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lex_toc.html">Lexical analysis specification</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="syntax_toc.html">Syntactic Analysis Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="comptrees_toc.html">Computation in Trees</a></td></tr>
</table>

<h4>Tools</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lcl_toc.html">LIGA Control Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="show_toc.html">Debugging Information for LIDO</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gorto_toc.html">Graphical ORder TOol</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="fw_toc.html">FunnelWeb User's Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ptg_toc.html">Pattern-based Text Generator</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="deftbl_toc.html">Property Definition Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="oil_toc.html">Operator Identification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="tp_toc.html">Tree Grammar Specification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="clp_toc.html">Command Line Processing</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="cola_toc.html">COLA Options Reference Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="idem_toc.html">Generating Unparsing Code</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="mon_toc.html">Monitoring a Processor's Execution</a> </td></tr>
</table>

<h4>Administration</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="sysadmin_toc.html">System Administration Guide</a> </td></tr>
</table>

<HR WIDTH="100%">
<A HREF="mailto:eli-project-users@lists.sourceforge.net">
<IMG SRC="gifs/button_mail.gif" BORDER=0 ALIGN="left"></A>
<A HREF="index.html"><IMG SRC="gifs/home.gif" BORDER=0 ALIGN="right"></A>

</TD>
<TD VALIGN=TOP WIDTH="25"><img src="gifs/empty.gif" WIDTH=25 HEIGHT=25></TD>

<TD VALIGN=TOP WIDTH="600">
<H1>New Features of Eli4.0</H1>
<P>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="news4.0_1.html"><IMG SRC="gifs/prev.gif" ALT="Previous Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="news4.0_3.html"><IMG SRC="gifs/next.gif" ALT="Next Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="news4.0_toc.html"><IMG SRC="gifs/up.gif" ALT="Table of Contents" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT="">
<HR size=1 noshade width=600 align=left>
<H1><A NAME="SEC2" HREF="news4.0_toc.html#SEC2">Lido News for Eli 4.0</A></H1>
<P>
<H2><A NAME="SEC3" HREF="news4.0_toc.html#SEC3">Terminals</A></H2>
<A NAME="IDX1"></A>
<P>
In previous LIDO versions non-literal terminals were considered to
be symbols that may have attributes - several inherited attributes
and at most one that is supplied when the node is constructed. Hence,
non-literal terminals may have upper symbol computations, and their
attributes may be used in adjacent and in remote contexts.
<P>
In the new LIDO version a non-literal terminal, like Ident in a rule
<P>
<PRE>
   RULE decl: Declaration ::= Ident ':' Type END;
</PRE>
<P>
may supply a value to computations associated to the <CODE>RULE</CODE> context. 
That value usually describes a property
of the corresponding input token, e. g. the encoding of an identifier
determined by the scanner and passed through by the parser.
<P>
The type of the value supplied by a non-literal terminal is specified
by a terminal specification like
<A NAME="IDX2"></A>
<P>
<PRE>
   TERM Ident : int;
</PRE>
<P>
The above construct can be omitted if the type is <CODE>int</CODE>, i.e.
in all cases where the terminal is provided by an Eli generated
scanner. Types other than <CODE>int</CODE> may occur if tree nodes are
created by explicit computations.
<P>
The value of a non-literal terminal of a certain context can be
used in computations associated to that context, e. g.
<A NAME="IDX3"></A>
<P>
<PRE>
   Declaration.Key = DefineIdn (INCLUDING Root.Env, Ident);
</PRE>
<P>
There the name of the non-literal terminal stands for its value.
If there are several occurrences of a non-literal terminal in a
production, their values are distinguished by indexing their names,
e. g. <CODE>Ident[1]</CODE>, <CODE>Ident[2]</CODE>, ...
<P>
The values of non-literal terminals may also be used in symbol computations.
There the notation is <CODE>TERM</CODE>, <CODE>TERM[1]</CODE>, <CODE>TERM[2]</CODE>, ..., e. g. in
<P>
<PRE>
   SYMBOL Use COMPUTE
      SYNT.Key = KeyInEnv (INCLUDING Root.Env, TERM);
   END;
</PRE>
<P>
In order not to immediatly invalidate existing specifications LIGA
still accepts most uses of old style terminals and internally
transforms them into new style terminals.
<P>
<H2><A NAME="SEC4" HREF="news4.0_toc.html#SEC4"><CODE>TRANSFER</CODE></A></H2>
<A NAME="IDX4"></A>
<P>
The <CODE>TRANSFER</CODE> construct provided by former LIDO versions is no
longer available.
<P>
<H2><A NAME="SEC5" HREF="news4.0_toc.html#SEC5">Separators</A></H2>
<P>
The new LIDO version requires semicolons (';') to terminate <CODE>RULE</CODE>
and <CODE>SYMBOL</CODE> specifications and computations. In previous versions
of LIDO the '<CODE>;</CODE>' after the last specification or computations
could be ommited.
<P>
<H2><A NAME="SEC6" HREF="news4.0_toc.html#SEC6">Bottom-Up Evaluation</A></H2>
<A NAME="IDX5"></A>
<P>
If computations are to be executed while the input is read
they are now to be marked <CODE>BOTTOM_UP</CODE>, e.g.
<P>
<PRE>
        printf ("immediate reply\n") BOTTOM_UP;
</PRE>
<A NAME="IDX6"></A>
instead of using a <CODE>LIGAPragma</CODE>.
<P>
Bottom-Up attribute evaluation, i.e. attribute computations during 
abstract structure tree construction ("parse-time") is no-longer the
default strategy used in Eli. To switch to Bottom-Up evaluation it has
to be activated in an .ctl specification (<CODE>ORDER: TREE BOTTOM_UP</CODE>),
See  <A HREF="lcl_3.html#SEC3">Order Options of LCL - Liga Control Language</A>, 
or requested by a <CODE>BOTTOM_UP</CODE> specifier in LIDO
See  <A HREF="lidoref_5.html#SEC6">Computations of LIDO - Reference Manual</A>.
<P>
<H2><A NAME="SEC7" HREF="news4.0_toc.html#SEC7"><CODE>CLASS</CODE> and <CODE>TREE SYMBOLS</CODE></A></H2>
<A NAME="IDX7"></A>
<A NAME="IDX8"></A>
<P>
Symbols that describe computational roles (e.g. <CODE>RangeScope</CODE>)
are now explicitly distinguished from tree grammar symbols
by using the keyword <CODE>CLASS</CODE> before <CODE>SYMBOL</CODE>, e.g.
<P>
<PRE>
   CLASS SYMBOL RangeScope COMPUTE ... END;
</PRE>
<P>
Symbols that occur in the tree grammar (<EM>tree symbols</EM>) are specified
as <CODE>TREE SYMBOLS</CODE>:
<P>
<PRE>
   TREE SYMBOL expr COMPUTE ... END;
</PRE>
<P>
With this extension Liga can then check whether incidentally the name 
of a tree grammar symbol coincides with a <CODE>CLASS</CODE> symbol, that may be 
obtained from a library module.
<P>
Liga will issue warning messages if there is an <CODE>INHERITS</CODE> from a tree 
grammar symbol, or if a <CODE>CLASS</CODE> symbol is also a tree grammar symbol.
For upward compatibility symbol specifications without <CODE>TREE</CODE> or <CODE>CLASS</CODE> 
prefix are still supported.
<P>
<H2><A NAME="SEC8" HREF="news4.0_toc.html#SEC8"><CODE>LIGAPragma</CODE></A></H2>
<P>
The <CODE>LIGAPragma</CODE> notation of former versions has been substituted by
simpler notations (see  <A HREF="lidoref_13.html#SEC22">Outdated constructs of LIDO - Reference Manual</A>).
<P>
<H2><A NAME="SEC9" HREF="news4.0_toc.html#SEC9">Terminals in <CODE>LISTOF</CODE> productions</A></H2>
<A NAME="IDX9"></A>
<A NAME="IDX10"></A>
<P>
In previous LIDO versions terminals were allowed to be used as
<CODE>LISTOF</CODE> elements, e.g.:
<P>
<PRE>
   RULE: Idents LISTOF Identifier
</PRE>
<P>
This facility is not supported anymore.
<P>
<H2><A NAME="SEC10" HREF="news4.0_toc.html#SEC10"><CODE>DEPENDS_ON</CODE></A></H2>
<A NAME="IDX11"></A>
<P>
An alternative token <CODE>&#60;-</CODE> for <CODE>DEPENDS_ON</CODE> is accepted.
<P>
<H2><A NAME="SEC11" HREF="news4.0_toc.html#SEC11"><CODE>LINE</CODE>, <CODE>COL</CODE>, <CODE>COORDREF</CODE></A></H2>
<A NAME="IDX12"></A>
<A NAME="IDX13"></A>
<A NAME="IDX14"></A>
<P>
If the source coordinates of contexts are used in computations, the
identifiers <CODE>LINE</CODE>, <CODE>COL</CODE>, <CODE>COORDREF</CODE> must occur directly
in the Lido text. They may not be introduced by macros defined in a
<TT>`.head'</TT> file. As a consequence the library module Message has been
removed.
<P>
If there is no such coordinate usage in a certain
context, that information is not stored in the tree node.
The storage needed for the tree is reduced by this means.
<P>
<H2><A NAME="SEC12" HREF="news4.0_toc.html#SEC12">Chain Productions</A></H2>
<A NAME="IDX15"></A>
<P>
Chain Productions of the form
<PRE>
   Production  ::=  SymbName  'IS'  SymbName
</PRE>
are no longer valid.
<P>
Productions using <CODE>::=</CODE> now have the same meaning as the former <CODE>IS</CODE>.
The effect of hiding such productions from the parser
is achieved by mapping the concrete grammar to the tree grammar.
<P>
<H2><A NAME="SEC13" HREF="news4.0_toc.html#SEC13">Type Definitions</A></H2>
<P>
Specifications of the form
<A NAME="IDX17"></A>
<A NAME="IDX16"></A>
<PRE>
   Specification   ::=     'TYPE' TypeName [Extern] ['LISTEDTO' TypeName]
   Extern          ::=     Literal
</PRE>
<P>
are no longer valid.
<CODE>TypeNames</CODE> are now simply introduced by their use. 
<P>
<H2><A NAME="SEC14" HREF="news4.0_toc.html#SEC14">Separated <CODE>CHAINSTART</CODE></A></H2>
<A NAME="IDX18"></A>
<P>
Computations of the form
<PRE>
   Computation     ::=     'CHAINSTART' ChainAttr
</PRE>
are no longer valid.
<P>
The keyword <CODE>CHAINSTART</CODE> is now attached to the computation that starts
the chain.
<P>
<H2><A NAME="SEC15" HREF="news4.0_toc.html#SEC15">LIDO Tokens</A></H2>
<A NAME="IDX19"></A>
<A NAME="IDX20"></A>
<A NAME="IDX21"></A>
<P>
The keyword <CODE>STATIC</CODE> (equivalent to <CODE>COMPUTE</CODE>) is no longer valid.
<P>
The <CODE>:=</CODE> token (equivalent to <CODE>=</CODE>) in computations is no longer valid.
<P>
The keyword <CODE>CONDITION</CODE> in front of plain computations (computations
that do not compute an attribute) is now omitted.
<P>
<HR size=1 noshade width=600 align=left>
<P>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="news4.0_1.html"><IMG SRC="gifs/prev.gif" ALT="Previous Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="news4.0_3.html"><IMG SRC="gifs/next.gif" ALT="Next Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="news4.0_toc.html"><IMG SRC="gifs/up.gif" ALT="Table of Contents" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT="">
<HR size=1 noshade width=600 align=left>
</TD>
</TR>
</TABLE>

</BODY></HTML>
